1. Technical Field
The invention relates to computer processing systems and, more particularly, to tools, such as debugging tools and visualization tools, for replaying the execution of programs on such computer processing systems.
2. Description of the Related Art
Modern operating system platforms support concurrent multiple threads of execution. Some of these operating system platforms support concurrent multiple threads without complete scheduling control by the user. For example, operating system platforms that support the Java.TM. Virtual Machine Specification fall into this category. In such systems, each time a Java.TM. program runs, the time allocated to each unsynchronized thread may change as these times are under the control of an external operating system. The apparently random time allocation to threads introduces non-deterministic program behavior. Other events such as windowing events, network events/messages and general input output operations may also introduce non-deterministic program behavior. Such program execution is referred to below as a non-deterministic execution instance.
Such non-deterministic program behavior takes away the benefits of using execution replay for debugging, performance monitoring, or visualization, or other similar tasks. For example, repeated execution of a program is common while debugging a program, and non-determinism may disallow a bug that appeared in one execution instance of the program from appearing in another execution instance of the same program. Non-determinism also affects visualization of the execution behavior of a program since execution behaviors can be different for different execution instances of the program. Current cyclic debugging, i.e., repeated execution for debugging, and monitoring-based tools such as visualizers, do not support deterministic re-execution.
Thus, there is a need in art to provide a software tool that provides deterministic replay of a non-deterministic execution instance.